package model

import (
	"gorm.io/gorm"
	"main.go/utils/errmsg"
)

type Category struct {
	ID   uint   `gorm:"primary_key;auto_increment" json:"id"`
	Name string `gorm:"type:varchar(20);not null" json:"name"`
}

// 查询分类是否存在
func CheckCate(name string) (code int) {
	var categorys Category
	db.Select("id").Where("name = ?", name).First(&categorys)
	if categorys.ID > 0 {
		return errmsg.ERROR_CATENAME_USED
	}
	return errmsg.SUCCESS
}

// 新增分类
func CreateCate(data *Category) int {
	// data.Password = ScryptPw(data.Password)
	err := db.Create(&data).Error
	if err != nil {
		return errmsg.ERROR // 500
	}
	return errmsg.SUCCESS // 200
}

// 查询分类列表
func GetCate(pageSize int, pageNum int) ([]Category, int) {
	var categorys []Category
	var total int64
	err = db.Limit(pageSize).Offset((pageNum - 1) * pageSize).Find(&categorys).Count(&total).Error
	if err != nil && err != gorm.ErrRecordNotFound {
		return nil, int(total)
	}
	return categorys, int(total)
}

// todo 查询分类下的文章

// 编辑分类信息
func EditCate(id int, data *Category) int {
	var categorys Category
	var maps = make(map[string]interface{})
	maps["name"] = data.Name
	err = db.Model(&categorys).Where("id = ?", id).Updates(maps).Error
	if err != nil {
		return errmsg.ERROR // 500
	}
	return errmsg.SUCCESS // 200
}

// 删除分类
func DeleteCate(id int) int {
	var categorys Category
	err = db.Where("id = ?", id).Delete(&categorys).Error
	if err != nil {
		return errmsg.ERROR //500
	}
	return errmsg.SUCCESS // 200
}
